היו 2 שאלות:
1. מקבלים סטרינג וצריך להחזיר כפלט כמה אותיות a צריך להוסיף כדי לקבל כמה שיותר צירופי aa. צירוף aa יכול להיות לפני ואחרי אות שהיא לא a. במידה והקלט מכיל רצף של יותר מ2 a הפלט הוא 0 (שגיאה). דוגמאות:
* קלט: "aaba" הפלט הוא 1 כי ניתן להוסיף רק a אחד ("aabaa")
* קלט: "b" הפלט: 4 ("aabaa")
* קלט: "aaaba" הפלט: 0 כי אסור שיהיה רק של יותר מ2 a.
write a function that, given a string S consisting of N characters, Returns the maximum number of letters 'a' that can be inserted into S. so that the resulting string doesn't contain three consecutive letters 'a'. if string S already contains the substring "aaa", then function should return -1.
given S = "aabab". should return 3 "aabaabaa"
given S = "dog". should return 8 "aadaaoaagaa"
given S = "aa". should return 0
given S = "baaaa". should return -1
נתנו לי מבחן בית של לענות על 2 שאלות במשך שעתיים וחצי
(יכלתי לבחור או לכתוב בשפת C או ב CPP)
שאלות מתוך הראיון
לכתוב פונקציה שמקבלת רפרנס של ווקטור (של INT) ןעלי להחזיר את המספר הגבוה ביותר שיש לו גם מספר שלילי בוקטור לדוגמא [ 1,3,6,2,-2,1,-6] צריך להחזיר 6.
אם אן כזה, צריך להחזיר 0. הביצועים חשובים, כלומר צריךלנסות לעשות את הקוד בסיבוכיות הכי נמוכה שאפשר.
תשובות
הוסף תשובה
|
לצפיה בתשובות
מאי 2019
אני עשיתי כך:
1.סידרתי את המערך בעזרת פנוקציית SORT של CPP.
2.בדקתי שהתא הכי ימני גדול ושונה מ0
3.בדקתי שהתא הכי שמאלי קטן ושונה מ0 (2 ו 3 מוודאים שיש גם מספרים חיוביים וגם שליליים בווקטור, אחרת מחזרים 0)
4.בדקתי שהווקטור לא ריק - אחרת מחזיר 0
5.בדקתי אם המספר בתא הכי ימני שווה למספר בתא הכי שמאלי(שווה לאר הכפלת המספר בתא השמאלי ביותר במינוס)- החזר את המספר
6.אם המספר בתא הכי ימני קטן מהמספר בתא הכי שמאלי (אחרי שהכפלתי אותו במינוס) - קדם את המצביע של התא הכי שמאלי ב1.
7.אם המספר בתא הכי ימני גדול מהמספר בתא הכי שמאלי (אחרי שהכפלתי אותו במינוס) - תוריד את המצביע של התא הכי ימני ב1.
8.אם שני המצביעים הגיעו לאותו מקום, החזר 0 - כי לא נמצא מספר שיש לו גם שלילי וגם חיובי.